/*
 * Copyright 2021 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package app.delish.details

import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.withStyle
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import app.delish.details.R
import com.elbehiry.model.RecipesItem

/**
 * 食谱摘要组件：显示食谱的热量和准备时间信息
 *
 * 设计说明：
 * 使用水平布局展示两个核心信息：
 * 1. 食谱的热量（卡路里）
 * 2. 准备时间（分钟）
 * 每项信息使用不同颜色的文本组合（数值+单位）
 *
 * @param recipe 食谱数据对象，包含热量和准备时间信息
 */
@Composable
fun RecipeSummary(recipe: RecipesItem) {
    // 水平布局容器
    Row(
        modifier = Modifier
            .fillMaxWidth()          // 占满宽度
            .wrapContentHeight()      // 高度自适应内容
            .padding(16.dp)           // 整体内边距
    ) {
        // 热量信息部分
        Text(
            text = buildAnnotatedString {
                // 数值部分（白色，正常大小）
                withStyle(
                    style = SpanStyle(
                        color = Color.White,
                        fontSize = 14.sp
                    )
                ) {
                    append("${recipe.nutrientsAmount} ")  // 热量数值
                }
                // 单位部分（灰色，正常大小）
                withStyle(
                    style = SpanStyle(
                        color = Color.Gray,
                        fontSize = 14.sp
                    )
                ) {
                    append(stringResource(id = R.string.calories))  // "卡路里"
                }
            },
            modifier = Modifier
                .padding(start = 16.dp, end = 8.dp)  // 左右内边距
                .fillMaxSize()                       // 占满可用空间
                .weight(1f)                          // 平均分配宽度
                .align(Alignment.CenterVertically)   // 垂直居中
        )

        // 准备时间信息部分
        Text(
            text = buildAnnotatedString {//允许在同一个Text组件内使用不同样式
                // 数值部分（白色，正常大小）
                withStyle(
                    style = SpanStyle(
                        color = Color.White,
                        fontSize = 14.sp
                    )
                ) {
                    append("${recipe.readyInMinutes} ")  // 准备时间（分钟）
                }
                // 单位部分（灰色，正常大小）
                withStyle(
                    style = SpanStyle(
                        color = Color.Gray,
                        fontSize = 14.sp
                    )
                ) {
                    append(stringResource(id = R.string.minutes))  // "分钟"
                }
            },
            modifier = Modifier
                .padding(start = 16.dp, end = 8.dp)  // 左右内边距
                .fillMaxSize()                       // 占满可用空间
                .weight(1f)                          // 平均分配宽度
                .align(Alignment.CenterVertically)    // 垂直居中
        )
    }
}
@Composable
@Preview
fun PreviewRecipeSummary() {
    RecipeSummary(RecipesItem(id=-1))
}
